package main

import "fmt"

type Person123 struct {
	Name string
}

func (p Person123) test03() {
	p.Name = "jack"
	fmt.Println(p.Name) //jack
}

func (p *Person123) test04() {
	p.Name = "jerry"
	fmt.Println(p.Name) //jerry
}

func main() {
	p := Person123{"viktor"}
	p.test03()
	fmt.Println(p.Name) // viktor

	(&p).test03()       //从形式上传入地址，但是本质扔然是值拷贝
	fmt.Println(p.Name) // viktor

	(&p).test04()
	fmt.Println(p.Name) // jerry
	p.test04()          //等价于(&p).test04()，从形式上是传入值类型，但是本事仍然是地址拷贝
}
